package com.tansun.easycare.rule.ruleproj.service;

import java.util.List;

import com.tansun.easycare.core.service.CrudService;
import com.tansun.easycare.rule.common.BaseVO;
import com.tansun.easycare.rule.common.entity.RuleBaseEntity;
import com.tansun.easycare.rule.ruleproj.entity.RuleProjectRank;

/**
 * 层级结构管理Service
 * @author lph
 * @version 2019-09-11
 */
public interface RuleProjectRankService extends CrudService<RuleProjectRank> {
	/**
	 * 首次保存时调用此方法，初始化模块
	 * @param projectName
	 * @param projectCode
	 * @return 
	 */
	public void initBaseModule(String projectName,String projectCode,Boolean isUpdate,List<RuleProjectRank> ranklist);
	/**
	 * 删除层级信息（包含关联的变量及模型）
	 * @param tidArrList
	 */
	public void deleteRankInfo(String tidArr,String projectCode)throws Exception ;
	/**
	 * 查询关联的规则记录数及数据集记录数信息（包含关联的变量及模型）
	 * @param tid
	 * @return 
	 * @throws ClassNotFoundException 
	 */
	public String findRefCount(String tidArr);

	//递归查询id
	List<String> findIdsByRecursion(String id,String targetType);
	/**
	 * 设置关联id
	 * @param obj
	 * @param isRecursion 是否递归查询
	 */
	void setRefRandIds(RuleBaseEntity<?> obj,boolean isRecursion);
	/**
	 * 设置关联id
	 * @param obj
	 * @param isRecursion 是否递归查询
	 */
	public void setRefRandIds(BaseVO<?> obj,boolean isRecursion);


	/**
	 * 设置目录树的展开与关闭
	 * @param rankList
	 */
	public void closeTree(List<RuleProjectRank> rankList);
	
	/**
	 * 排序
	 * @param rankList
	 */
	public void sortTree(List<RuleProjectRank> rankList);
	
	/**
	 * 根据兄弟节点id 及类型定位RuleProjectRank
	 * @param map
	 * @return
	 */
	RuleProjectRank findIdByIdType(String brId,String targetType);
}